package com.ztstudy.poi.controller;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.ChartMultiSeriesRenderData;
import com.deepoove.poi.data.ChartSingleSeriesRenderData;
import com.deepoove.poi.data.Charts;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;

public class ChartController {
    public static void main(String[] args) {
        // 创建数据

        //多系列图表
        // 创建了一个标题为 "Language Speakers vs Countries" 的图表
        // 并添加了两个系列，分别包含中文和英语的听的人数和国家数量。

        ArrayList<Double> objects = new ArrayList<>();
        objects.add(223.0);
        objects.add(119.0);

        ArrayList<String> name = new ArrayList<>();
        name.add("中国");
        name.add("美国");
        ChartMultiSeriesRenderData chart = Charts
                .ofMultiSeries("Language Speakers vs Countries", name.toArray(new String[name.size()]))
                .addSeries("使用人数", objects.toArray(new Double[objects.size()]))
                //.addSeries("使用国家", new Double[] {15.0, 34.0})
                .create();

        //单系列图表
        ChartSingleSeriesRenderData pie = Charts
                .ofSingleSeries("国家人口占比图", new String[] { "美国", "中国", "日本", "韩国" , "德国"})
                .series("countries", new Integer[] { 72665, 95969 ,23821, 9321,45321})
                .create();

        //多系列组合图表
        ChartMultiSeriesRenderData comb = Charts
                .ofComboSeries("MyChart", new String[] { "中文", "English" })
                .addBarSeries("countries", new Double[] { 15.0, 6.0 })
                .addBarSeries("speakers", new Double[] { 223.0, 119.0 })
                .addBarSeries("NewBar", new Double[] { 223.0, 119.0 })
                .addLineSeries("youngs", new Double[] { 323.0, 89.0 })
                .addLineSeries("NewLine", new Double[] { 123.0, 59.0 }).create();



        // 使用模板文件
        XWPFTemplate template;
        try {
            //正常使用resources下的文件
            //InputStream inputStream = this.getClass().getResourceAsStream("LanguageChart.docx.docx");
            //template = XWPFTemplate.compile(inputStream);

            // 加载模板文件
            template = XWPFTemplate.compile("D:/Graduation_Word/poi_study/poi/src/main/resources/chartTemplate.docx");
            // 渲染图表到模板
            HashMap<String, Object> data = new HashMap<>();
            data.put("chart", chart);
            data.put("pieChart", pie);
            //data.put("combChart", comb);
            template.render(data);// 渲染数据

//            template.write(new FileOutputStream("D:/Graduation_Word/poi_study/poi/src/main/resources/outputTable.docx"));
//            template.close();
            // 输出生成的 Word 文件
            //正常使用resources下的文件
            //InputStream inputStream = this.getClass().getResourceAsStream("LanguageChart.docx.docx");
            try (FileOutputStream out = new FileOutputStream("D:/Graduation_Word/poi_study/poi/src/main/resources/OutPutChart.docx")) {
                template.write(out);
            }
            System.out.println("Word 文件生成成功！");
            template.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
